clc;
clear;
close all;

filenames = ["int", "water-int-b", "water-int-m"];
VAR_THRESH = 0.15;
DTW_THRESH = 200;
timeX = [10; 20; 30];
timeUnit = 10;
aMetal = zeros(length(timeX), 1);
bMetal = zeros(length(timeX), 1);
cMetal = zeros(length(timeX), 1);
dMetal = zeros(length(timeX), 1);
aBody = zeros(length(timeX), 1);
bBody = zeros(length(timeX), 1);
cBody = zeros(length(timeX), 1);
dBody = zeros(length(timeX), 1);

for i = 1: length(filenames)
    m = load("new_data/" + filenames(i) + ".mat");
    label = m.label;
    time = m.v;
    [sampleNum, segmentNum, ~] = size(m.tag1rssi);
    result = zeros(1, sampleNum);
    for samN = 1: sampleNum
        result(samN) = 1;
        for segN = 1: segmentNum
            tag1rssi = m.tag1rssi(samN, segN, :);
            tag1rssi = tag1rssi(:)';
            tag2rssi = m.tag2rssi(samN, segN, :);
            tag2rssi = tag2rssi(:)';
            if var(tag1rssi) > VAR_THRESH || var(tag2rssi) > VAR_THRESH
                tag1rssi = zscore(tag1rssi);
                tag2rssi = zscore(tag2rssi);
                if dtw(tag1rssi, tag2rssi) < DTW_THRESH
                    %y((samN-1)*segmentNum+segN) = dtw(tag1rssi, tag2rssi);
                    result(samN) = -1;
                    break;
                end
            end
        end
        if m.dis(samN) == "m"
            if result(samN) == 1 && label(samN) == 1
                aMetal(time(samN)/timeUnit) = aMetal(time(samN)/timeUnit) + 1;
            elseif result(samN) ~= 1 && label(samN) == 1
                cMetal(time(samN)/timeUnit) = cMetal(time(samN)/timeUnit) + 1;
            elseif result(samN) == 1 && label(samN) ~= 1
                bMetal(time(samN)/timeUnit) = bMetal(time(samN)/timeUnit) + 1;
            elseif result(samN) ~= 1 && label(samN) ~= 1
                dMetal(time(samN)/timeUnit) = dMetal(time(samN)/timeUnit) + 1;
            end
        elseif m.dis(samN) == "b"
            if result(samN) == 1 && label(samN) == 1
                aBody(time(samN)/timeUnit) = aBody(time(samN)/timeUnit) + 1;
            elseif result(samN) ~= 1 && label(samN) == 1
                cBody(time(samN)/timeUnit) = cBody(time(samN)/timeUnit) + 1;
            elseif result(samN) == 1 && label(samN) ~= 1
                bBody(time(samN)/timeUnit) = bBody(time(samN)/timeUnit) + 1;
            elseif result(samN) ~= 1 && label(samN) ~= 1
                dBody(time(samN)/timeUnit) = dBody(time(samN)/timeUnit) + 1;
            end
        end
    end
end

figure;
subplot(1, 2, 1);
color1 = [0 .3 .7];
color2 = [.8 .1 .1];
size = 18;

x = timeX;
TPR = dMetal./(bMetal+dMetal);
FPR = cMetal./(aMetal+cMetal);
y = [TPR, FPR];
z = bar(x, y);

set(z(1), 'FaceColor', color1);
set(z(2), 'FaceColor', color2);
xlabel('time (s)');
ylabel('TPR / FPR');
set(get(gca,'XLabel'),'FontSize',size);
set(get(gca,'YLabel'),'FontSize',size);
set(gca,'FontSize',size);
legend('TPR', 'FPR', 'Location', 'NorthWest');
ylim([0 1]);

subplot(1, 2, 2);
color1 = [0 .3 .7];
color2 = [.8 .1 .1];
size = 18;

x = timeX;
TPR = dBody./(bBody+dBody);
FPR = cBody./(aBody+cBody);
y = [TPR, FPR];
z = bar(x, y);

set(z(1), 'FaceColor', color1);
set(z(2), 'FaceColor', color2);
xlabel('time (s)');
ylabel('TPR / FPR');
set(get(gca,'XLabel'),'FontSize',size);
set(get(gca,'YLabel'),'FontSize',size);
set(gca,'FontSize',size);
legend('TPR', 'FPR', 'Location', 'NorthWest');
ylim([0 1]);